// !链表: 链表是多个元素组成的列表, 链表元素的存储不连续, 是用next指针连在一起

// 数组 VS 链表
// 数组: 增删非首尾元素时往往需要移动元素
// 链表: 增删非首尾元素, 不需要移动元素, 只需要更改 next 的指向即可

// JavaScript 中没有链表, 可以用 Object 模拟链表

const a = { val: 'a' }
const b = { val: 'b' }
const c = { val: 'c' }
const d = { val: 'd' }

a.next = b
b.next = c
c.next = d

// 单指针遍历链表
let p = a
while (p) {
  console.log(p.val)
  p = p.next
}

// 插入
const e = { val: 'e' }
c.next = e
e.next = d

// 删除
c.next = d
